package com.cbwl.eoas.cms.web.controller.sysconfig;

import java.util.Date;

import javax.servlet.http.HttpServletRequest;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import com.cbwl.eoas.cms.api.sysconfig.IDictDetailService;
import com.cbwl.eoas.cms.api.sysconfig.ISysResourceService;
import com.cbwl.eoas.cms.model.sysconfig.DictDetailDTO;
import com.cbwl.eoas.cms.model.sysconfig.SysResourceDTO;
import com.cbwl.eoas.common.framework.exception.CustomException;
import com.cbwl.eoas.common.framework.session.SessionManager;
import com.cbwl.eoas.common.framework.vo.PageRequest;
import com.cbwl.eoas.common.util.constain.DicTypeConstant;
import com.cbwl.eoas.common.util.oss.OSSClientUtil;
import com.cbwl.eoas.common.web.Result;
import com.github.pagehelper.PageInfo;



/**
 * 
 * <p>[描述信息：系统资源管理Controller]</p>
 *
 * @author 虞云波 - yuyunbo@3856.cc
 * @version 1.0 Created on 2017年10月12日 下午13:29:23
 */
@Controller
@RequestMapping("/sysresource")
public class SysResourceController {
	
	private static Logger logger = LoggerFactory.getLogger(SysResourceController.class);
	
	//业务层注解
	@Autowired
	private ISysResourceService sysResourceService;
	
	//业务层注解
	@Autowired
	private IDictDetailService dictDetailService;
	
	
	//oss工具类
	@Autowired
	private OSSClientUtil oSSClientUtil;
	
	
	/**
	 * <p>初始化界面</p>
	 * 
	 * @return
	 * @author 虞云波 - yuyunbo@3856.cc
	 * @version 1.0 Created on 2017年10月12日 下午13:29:23
	 */
	@RequestMapping("/initSysResource")
	public String initSysResourcePage(HttpServletRequest request) {
		
		SysResourceDTO bean = new SysResourceDTO();
		bean.setSelectType("301,302");
		request.setAttribute("beanList", sysResourceService.queryObjectList(bean));
		return "initSysResource";
	}


	/**
	 * <p>初始化新增修改界面</p>
	 * 
	 * @return
	 * @author 虞云波 - yuyunbo@3856.cc
	 * @version 1.0 Created on 2017年10月12日 下午13:29:23
	 */
	@RequestMapping("/initAddUpdateSysResourcePage")
	public String initAddUpdateSysResourcePage(HttpServletRequest request,SysResourceDTO bean) {
		
		request.setAttribute("beanResource", bean);
		
		DictDetailDTO detailBean = new DictDetailDTO();
		detailBean.setDictTypeNo(DicTypeConstant.state);
		request.setAttribute("detailBean", dictDetailService.queryObjectList(detailBean));
		
		
		detailBean.setDictTypeNo(DicTypeConstant.resourceType);
		request.setAttribute("rTypeBean", dictDetailService.queryObjectList(detailBean));
		
		detailBean.setDictTypeNo(DicTypeConstant.menu_types);
		request.setAttribute("menuType", dictDetailService.queryObjectList(detailBean));
		
		
		SysResourceDTO resourceBean = new SysResourceDTO();
		if(StringUtils.isEmpty(bean.getId())){
			resourceBean.setSelectType("301");
		}else{
			resourceBean.setSelectType("301,302");
		}
		
		request.setAttribute("beanList", sysResourceService.queryObjectList(resourceBean));
		
		return "initAddUpdateSysResourcePage";
	}
	

	/**
	 * <p>查询（分页）</p>
	 * 
	 * @param bean
	 * @return
	 * @author 虞云波 - yuyunbo@3856.cc
	 * @version 1.0 Created on 2017年10月12日 下午13:29:23
	 */
	@RequestMapping("/querySysResourcePage")
	@ResponseBody
	public Object querySysResourcePage(SysResourceDTO bean,PageRequest pageRequest) {
		Result result = new Result(Result.Status.OK, "查询成功", "200");
		// 分页查询用户信息
		PageInfo<?> orgPageInfo =  sysResourceService.queryPageList(bean,pageRequest);
		result.setData(orgPageInfo);
		return result;
	}

	/**
	 * 
	 * <p>通过id查询主体信息</p>
	 * 
	 * @param bean
	 * @return
	 * @author 虞云波 - yuyunbo@3856.cc
	 * @version 1.0 Created on 2017年10月12日 下午13:29:23
	 */
	@RequestMapping("/getSysResourceById")
	@ResponseBody
	public Object getSysResourceById(SysResourceDTO bean) {
		return sysResourceService.getObjectById(bean);
	}

	
	@RequestMapping("/saveImageToOss")
	@ResponseBody
	public Object saveApkToOss(HttpServletRequest request,MultipartFile natrualImgFile) throws CustomException {
		String name = natrualImgFile.getName();
		if(StringUtils.isEmpty(name)){
			new CustomException("","文件不能为空");
		}
		logger.info("用户id={}上传了图片文件{}",SessionManager.getCurrentUser().getId(),name);
		return oSSClientUtil.uploadImg2Oss(natrualImgFile);
	}
	
	
	/**
	 * 
	 * <p>保存主体信息</p>
	 * 
	 * @param bean
	 * @return
	 * @author 虞云波 - yuyunbo@3856.cc
	 * @version 1.0 Created on 2017年10月12日 下午13:29:23
	 */
	@RequestMapping("/saveSysResource")
	@ResponseBody
	public Object saveSysResource(SysResourceDTO bean) throws Exception {


		bean.setGmtCreate(new Date());
		bean.setCreater(SessionManager.getCurrentUser().getId());
		logger.info("{}新建了资源信息,资源名称{}", SessionManager.getCurrentUser().getEmpName(),bean.getName());
		return sysResourceService.saveObject(bean);
	}

	/**
	 * 
	 * <p>更新主体信息</p>
	 * 
	 * @param bean
	 * @return
	 * @author 虞云波 - yuyunbo@3856.cc
	 * @version 1.0 Created on 2017年10月12日 下午13:29:23
	 */
	@RequestMapping("/updateSysResource")
	@ResponseBody
	public Object updateSysResource(SysResourceDTO bean) throws Exception {		
		bean.setGmtModified(new Date());
		bean.setModifier(SessionManager.getCurrentUser().getId());
		logger.info("{}修改了资源信息,资源名称{}", SessionManager.getCurrentUser().getEmpName(),bean.getName());
		return sysResourceService.updateObject(bean);
	}

	/**
	 * 
	 * <p>删除主体信息</p>
	 * 
	 * @param bean
	 * @return
	 * @author 虞云波 - yuyunbo@3856.cc 
	 * @version 1.0 Created on 2017年10月12日 下午13:29:23
	 * @throws Exception 
	 */
	@RequestMapping("/deleteSysResource")
	@ResponseBody
	public Object deleteSysResource(SysResourceDTO bean) throws Exception {
		logger.info("{}删除了资源信息,资源名称{}", SessionManager.getCurrentUser().getEmpName(),bean.getName());
		return sysResourceService.deleteObject(bean);
	}
	
	
	/**
	 * 
	 * <p>功能实现描述</p>
	 * 
	 * @param bean
	 * @return
	 * @author: 虞云波 - yuyunbo@3856.cc 
	 * @date: Created on 2017年10月25日 下午6:04:01
	 */
	@RequestMapping("/queryObjectList")
	@ResponseBody
	public Object queryObjectList(SysResourceDTO bean){
		bean.setSelectType("301,302");
		return sysResourceService.queryObjectList(bean);
	}
	
	
	/**
	 * 
	 * <p>获取角色信息</p>
	 * 
	 * @param bean
	 * @return
	 * @author: 虞云波 - yuyunbo@3856.cc 
	 * @date: Created on 2017年10月31日 上午11:45:00
	 */
	@RequestMapping("/queryObjectListForRole")
	@ResponseBody
	public Object queryObjectListForRole(SysResourceDTO bean){
		bean.setSelectType("301,302");
		return sysResourceService.queryObjectList(bean);
	}
	
	
	
	
	/**
	 * 
	 * <p>根据参数查询List列表</p>
	 * 
	 * @param bean
	 * @return
	 * @author: 虞云波 - yuyunbo@3856.cc 
	 * @date: Created on 2017年10月26日 下午6:29:12
	 */
	@RequestMapping("/queryListByParam")
	@ResponseBody
	public Object queryListByParam(SysResourceDTO bean){
		return sysResourceService.queryObjectList(bean);
	}
	
	
	
	
}
